package com.cskaoyan.javase.oop3._2inner._4extend;

/**
 * Java中(真正意义上的)多继承的实现(了解)
 * 两种最常见的实现方式:
 *      1.接口,利用接口中的默认方法
 *      2.内部类,利用成员内部类
 *
 * @since 11:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        IASon ia = new IASon();
        ia.test3();

        new A().method();
    }
}

class IASon implements IA, IB, IC {
}

interface IA {
    default void test() {
        System.out.println("ia");
    }
}

interface IB {
    default void test2() {
        System.out.println("ib");
    }
}

interface IC {
    default void test3() {
        System.out.println("ic");
    }

}


class A extends B {
    class CSon extends C {
    }

    class DSon extends D {
    }

    public void method() {
        // 继承自B
        test();
        // 这时需要创建C,D的子类对象,访问成员
        // 在外围类的成员方法当中,创建自身成员内部类的对象,直接创建
        CSon cs = this.new CSon();
        DSon ds = new DSon();
        cs.test2();
        ds.test3();
    }
}

class B {
    void test() {
        System.out.println("B");
    }
}

class C {
    void test2() {
        System.out.println("C");
    }
}

class D {
    void test3() {
        System.out.println("D");
    }
}